package net.edu_soft.ec.asset.service;


import com.github.pagehelper.PageInfo;
import net.edu_soft.ec.asset.pojo.Audit;
import net.edu_soft.ec.asset.pojo.Product;
import net.edu_soft.ec.asset.pojo.bo.ProductBO;
import net.edu_soft.ec.asset.pojo.vo.ProductVO;

import java.util.List;

/**
 *  @author: PUING
 *  @Date: 2020/3/24 21:06
 *  @Description: 产品业务类
 */
public interface ProductService {

    /***
     * 查询产品信息，审核专用，状态为0;
     * @param productId 产品状态
     * @return 产品信息
     */
    Product find(Integer productId);

    /***
     * 根据产品id查询产品信息
     * @param productId 产品id
     * @return 单个产品信息
     */
    ProductVO findById(Integer productId);

    /**
     * 分页查询产品信息，根据关注的人数排序
     * @param pageNum 起始页
     * @param pageSize 记录数
     * @return 分页后产品集合
     */
    PageInfo<ProductBO> getProducts(Integer pageNum, Integer pageSize);


    /**
     * 根据产品分类分页查询商品信息
     * @param typeId 产品分类id
     * @param pageNum 当前页
     * @param pageSize 每页记录数
     * @return 产品集合
     */
    PageInfo<ProductBO> findAllByTypeId(Integer typeId,Integer pageNum, Integer pageSize);


    /**
     * 是否确认并批量删除
     * @param isDel 是否确认 0为否 1为是
     * @param ids id集合
     * @return 返回确认消息
     */
    int delProductByIds(Integer isDel,List<Integer> ids);


    /**
     * 添加产品
     * @param productVO 包括产品基本信息、详情、扩展、高校、标签
     * @param audit 审核信息
     * @return
     */
    int saveProduct(ProductVO productVO, Audit audit,String schools);


    /**
     * 修改产品
     * @param productVO 包括产品基本信息、详情、扩展、高校、标签
     * @return
     */
    int updateProduct(ProductVO productVO);

    /***
     * 分页查询厂家的产品，最新收录、用户最多，关注最多
     * @param factoryName 厂家名
     * @param condition 1、用户最多、2最新收录
     * @param pageNum 当前页
     * @param pageSize 每页数
     * @return
     */
    PageInfo<ProductBO> findFacPro(String factoryName,Integer condition,Integer pageNum,Integer pageSize);

    /***
     * 根据时间排序
     * @param condition 条件
     * @param pageNum 当前页
     * @param pageSize 每页数
     * @return
     */
    PageInfo<ProductBO> finProByDate(Integer condition,Integer pageNum,Integer pageSize);


}
